package org.hot100_1;

public class leetcode62 {
    public int findMin(int[] nums) {
        int left = 0;
        int right = nums.length-1;

        while (left<right){
            int mid =(left+right)>>>1;

            //最小值在mid的右侧
            if (nums[mid]>nums[right]){
                left=mid+1;
            }else {
                //最小值在mid的左侧，或者最小值就是mid
                right=mid;
            }
        }
        //运行到此，说明left=right,指向的是同一个元素
        //因为每次迭代中 right 指针总是可能被设置为 mid，而在找到最小值前，mid 永远不会超过最小值的位置。
        //同样地，left 指针通过 mid + 1 也总是安全地移动，因为它移动时 nums[mid] 确定大于 nums[right]，表示最小值肯定不在 mid 或其左侧。
        //所以，当 left 和 right 最终相遇时，它们指向的必然是最小元素，因为这是唯一未被排除的位置。
        return nums[left];
    }
}
